package cn.seocoo.platform.common.pay.common;

import cn.seocoo.platform.common.pay.alipay.AliPayUtils;
import cn.seocoo.platform.common.pay.wechat.WechatPayUtils;
import com.alipay.api.AlipayApiException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.Map;

public class ApiPayCommon {
    private static final Logger logger = LoggerFactory.getLogger(ApiPayCommon.class);


    /**
     * 支付来源 APP
     */
    public static final String PAY_SOURCE_APP = "1";

    /**
     * 支付来源 PC
     */
    public static final String PAY_SOURCE_PC = "2";


    /**
     * 公共支付方法
     *
     * @param payType     支付方式（1：支付宝; 2:微信; ）
     * @param paySource   支付来源方式 (1:app;2 pc )
     * @param orderNumber orderNumber 订单号
     * @param totalAmount totalAmount 订单金额(元)
     * @param orderMap    orderMap 自定义的订单信息(Map->字符串)
     * @author duanpj
     * @date: 2019/11/18 20:21
     */
    public static String payCommon(String paySource, String orderNumber, String totalAmount, Map<String,Object> orderMap, String payType) throws Exception {
        String msg = null;
        if ("1".equals(payType)) {
            //支付宝支付
            msg = AliPayUtils.aliPay(orderMap, orderNumber, totalAmount);
        } else if ("2".equals(payType)) {
            //微信支付
            if (PAY_SOURCE_PC.equals(paySource)) {
                //微信PC支付
                msg = WechatPayUtils.wechatPayForPC(paySource, orderNumber, totalAmount, orderMap);
            } else if (PAY_SOURCE_APP.equals(paySource)) {
                //微信APP支付
                msg = WechatPayUtils.wechatPayForAPP(paySource, orderNumber, totalAmount, orderMap);
            }
        }
        return msg;
    }

    /**
     *
     *
     * @param payType     支付方式（1：支付宝; 2:微信; 3:小程序）
     * @param orderNumber 商户系统内部订单号
     * @author duanpj
     * @date: 2019/12/3 18:13
     */
    public static Map<String, String> getOrderQuery(String payType, String orderNumber) {
        Map map = new HashMap();
        if ("1".equals(payType)) {
            //支付宝
            map = AliPayUtils.aliPayOrderQuery(orderNumber);
        } else if ("2".equals(payType) || "3".equals(payType)) {
            //微信
            map = WechatPayUtils.searchOrderInfo(orderNumber,payType);
            if ("NOTPAY".equals(map.get("tradeState")) || "CLOSED".equals(map.get("tradeState"))) {
                //未支付或者是订单关闭
                map.put("tradeState","NOTPAY");
            }
        }
        return map;
    }


}
